<!DOCTYPE HTML>

<html lang="en">
<head>

<title>MethodSecurityMetadataSourceAdvisor (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="MethodSecurityMetadataSourceAdvisor (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="MethodSecurityMetadataSourceAdvisor.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.access.intercept.aopalliance</a></div>
<h2 title="Class MethodSecurityMetadataSourceAdvisor" class="title">Class MethodSecurityMetadataSourceAdvisor</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.aop.support.AbstractPointcutAdvisor</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code>java.io.Serializable</code>, <code>org.springframework.aop.Advisor</code>, <code>org.springframework.aop.PointcutAdvisor</code>, <code>org.springframework.beans.factory.Aware</code>, <code>org.springframework.beans.factory.BeanFactoryAware</code>, <code>org.springframework.core.Ordered</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">MethodSecurityMetadataSourceAdvisor</span>
extends org.springframework.aop.support.AbstractPointcutAdvisor
implements org.springframework.beans.factory.BeanFactoryAware</pre>
<div class="block">Advisor driven by a <a href="../../method/MethodSecurityMetadataSource.html" title="interface in org.springframework.security.access.method"><code>MethodSecurityMetadataSource</code></a>, used to exclude a
<code>MethodInterceptor</code> from public (non-secure) methods.
<p>
Because the AOP framework caches advice calculations, this is normally faster than just
letting the <code>MethodInterceptor</code> run and find out itself that it has no work
to do.
<p>
This class also allows the use of Spring's <code>DefaultAdvisorAutoProxyCreator</code>,
which makes configuration easier than setup a <code>ProxyFactoryBean</code> for each
object requiring security. Note that autoproxying is not supported for BeanFactory
implementations, as post-processing is automatic only for application contexts.
<p>
Based on Spring's TransactionAttributeSourceAdvisor.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">

</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.springframework.aop.Advisor">

</a>
<h3>Fields inherited from interface&nbsp;org.springframework.aop.Advisor</h3>
<code>EMPTY_ADVICE</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.springframework.core.Ordered">

</a>
<h3>Fields inherited from interface&nbsp;org.springframework.core.Ordered</h3>
<code>HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE</code></li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">

</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="MethodSecurityMetadataSourceAdvisor.html#%3Cinit%3E(java.lang.String,org.springframework.security.access.method.MethodSecurityMetadataSource,java.lang.String)">MethodSecurityMetadataSourceAdvisor</a></span>&#8203;(java.lang.String&nbsp;adviceBeanName,
<a href="../../method/MethodSecurityMetadataSource.html" title="interface in org.springframework.security.access.method">MethodSecurityMetadataSource</a>&nbsp;attributeSource,
 java.lang.String&nbsp;attributeSourceBeanName)</code></th>
<td class="colLast">
<div class="block">Alternative constructor for situations where we want the advisor decoupled from the
advice.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>org.aopalliance.aop.Advice</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MethodSecurityMetadataSourceAdvisor.html#getAdvice()">getAdvice</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>org.springframework.aop.Pointcut</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MethodSecurityMetadataSourceAdvisor.html#getPointcut()">getPointcut</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="MethodSecurityMetadataSourceAdvisor.html#setBeanFactory(org.springframework.beans.factory.BeanFactory)">setBeanFactory</a></span>&#8203;(org.springframework.beans.factory.BeanFactory&nbsp;beanFactory)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.springframework.aop.support.AbstractPointcutAdvisor">

</a>
<h3>Methods inherited from class&nbsp;org.springframework.aop.support.AbstractPointcutAdvisor</h3>
<code>equals, getOrder, hashCode, isPerInstance, setOrder</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">

</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.lang.String,org.springframework.security.access.method.MethodSecurityMetadataSource,java.lang.String)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MethodSecurityMetadataSourceAdvisor</h4>
<pre>public&nbsp;MethodSecurityMetadataSourceAdvisor&#8203;(java.lang.String&nbsp;adviceBeanName,
                                           <a href="../../method/MethodSecurityMetadataSource.html" title="interface in org.springframework.security.access.method">MethodSecurityMetadataSource</a>&nbsp;attributeSource,
                                           java.lang.String&nbsp;attributeSourceBeanName)</pre>
<div class="block">Alternative constructor for situations where we want the advisor decoupled from the
advice. Instead the advice bean name should be set. This prevents eager
instantiation of the interceptor (and hence the AuthenticationManager). See
SEC-773, for example. The metadataSourceBeanName is used rather than a direct
reference to support serialization via a bean factory lookup.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>adviceBeanName</code> - name of the MethodSecurityInterceptor bean</dd>
<dd><code>attributeSource</code> - the SecurityMetadataSource (should be the same as the one
used on the interceptor)</dd>
<dd><code>attributeSourceBeanName</code> - the bean name of the attributeSource (required for
serialization)</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="getPointcut()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getPointcut</h4>
<pre class="methodSignature">public&nbsp;org.springframework.aop.Pointcut&nbsp;getPointcut()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getPointcut</code>&nbsp;in interface&nbsp;<code>org.springframework.aop.PointcutAdvisor</code></dd>
</dl>
</li>
</ul>
<a id="getAdvice()">

</a>
<ul class="blockList">
<li class="blockList">
<h4>getAdvice</h4>
<pre class="methodSignature">public&nbsp;org.aopalliance.aop.Advice&nbsp;getAdvice()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getAdvice</code>&nbsp;in interface&nbsp;<code>org.springframework.aop.Advisor</code></dd>
</dl>
</li>
</ul>
<a id="setBeanFactory(org.springframework.beans.factory.BeanFactory)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setBeanFactory</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setBeanFactory&#8203;(org.springframework.beans.factory.BeanFactory&nbsp;beanFactory)
                    throws org.springframework.beans.BeansException</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>setBeanFactory</code>&nbsp;in interface&nbsp;<code>org.springframework.beans.factory.BeanFactoryAware</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.springframework.beans.BeansException</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="MethodSecurityMetadataSourceAdvisor.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="MethodSecurityMetadataSourceAdvisor.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040ceebf984980c","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
